/*
 * Borne.cpp
 *
 *  Created on: 5 déc. 2009
 *      Author: math
 */

#include "liblut/core/LutBound.h"
#include "liblut/core/LutColor.h"
#include <iostream>
using namespace std;


/*---------------------------------------------------------------------------*/
/*                         Constructeur par défaut                           */
/*                        b = valeur par défaut  =0                          */
/*                    couleur: constructeur par défaut                       */
/*---------------------------------------------------------------------------*/
LutBound::LutBound() :
        m_b(0),
        m_color()
{}

/*---------------------------------------------------------------------------*/
/* Définition d'une nouvelle borne à partir de toute les données:            */
/*    la valeur et chacune des composantes de la couleur C1,C2,C3            */
/*------------------------------------------------------------- -------------*/
LutBound::LutBound(double val, int C1, int C2, int C3, eLutColorSpace type) :
    m_b(val), m_color(C1, C2, C3, type)
{}

/*---------------------------------------------------------------------------*/
/*    Définition d'une nouvelle borne uniquement à partir des données:       */
/*             b = la valeur donnée en entré                                 */
/*             couleur: couleur par défaut                                   */
/*--------------------------------------------------- -----------------------*/
LutBound::LutBound(double val) :
        m_b(val),
        m_color()
{}


LutBound::LutBound(double val, const LutColor& color) :
        m_b(val),
        m_color(color)
{}

LutBound::LutBound(const LutBound& bound) :
        m_b(bound.getValue()),
        m_color(bound.getColor())
{}

/*---------------------------------------------------------------------------*/
/*   Définition d'une nouvelle borne uniquement à partir des données:        */
/*              b = valeur par défaut ( =0)                                  */
/*             couleur: composantes données en entrée                        */
/*---------------------------------------------------------------------------*/
LutBound::LutBound(int C1, int C2, int C3, eLutColorSpace type) :
         m_b(0),
         m_color(C1, C2, C3, type)
{}

/*---------------------------------------------------------------------------*/
/*  Permet de remplacer dans une borne existante                             */
/*      la valeur de la borne par une valeur donnée en entrée                */
/*---------------------------------------------------------------------------*/
void LutBound::setValue( float val)
{
        m_b = val;
}

bool LutBound::operator<(const LutBound &other) const {
    bool b=false;
    if( this->getValue() < other.getValue() ){ b = true;}
    return b;
}

LutBound::~LutBound() {

}

/*---------------------------------------- ----------------------------------*/
/*   Permet de remplacer dans une borne existante                            */
/*        la valeur de la couleur  par une couleur                           */
/*        dont les composantes sont données en entrée                        */
/*---------------------------------------------------------------------------*/
void LutBound::setColor(int C1, int C2, int C3)
{
    m_color.setValues(C1, C2, C3);
}


